package com.lfs.market.service;

import cn.dev33.satoken.stp.SaTokenInfo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lfs.market.model.R;
import com.lfs.market.model.dto.*;
import com.lfs.market.model.entity.User;

import java.util.List;
import java.util.Map;


public interface UserService extends IService<User> {
    /**
     * 登录
     *
     * @param request
     * @return
     */
    SaTokenInfo login(UserLoginDto request);

    R<User> getUserInfo();


    void getLoginCode(String phone);

    R<User> getUserInfo(String userId);

    void updateUserInfoDetail(UpdateUserInfoDto dto);

    /**
     * 查询用户列表
     *
     * @param dto
     * @return
     */
    Page<User> getUserList(UserAdminPageDto dto);

    /**
     * 密码登录
     *
     * @param request
     * @return
     */
    SaTokenInfo loginPwd(UserLoginDto request);

    void updateUserInfo(UpdateUserInfoDto dto);

    Map getNum1UserStat();

    List<Map> getUserStat();

    /**
     * 注册
     *
     * @param request
     * @return
     */
    SaTokenInfo register(UserLoginDto request);

    /**
     * 根据用户ID查询用户信息
     *
     * @param userId
     * @return
     */
    User getByUserId(String userId);

    /**
     * 后台创建用户
     *
     * @param dto
     */
    void create(SystemUserCreateDto dto);

    /**
     * 删除用户
     *
     * @param ids
     */
    void deleteUser(List<String> ids);

    /**
     * 修改用户
     *
     * @param dto
     */
    void updateUser(SystemUserUpdateDto dto);

    /**
     * 管理员禁用用户
     *
     * @param userId
     */
    void disableUser(String userId);


    /**
     * 启用账号
     *
     * @param userId
     * @return
     */
    void ableUser(String userId);

    /**
     * 修改个人资料 审核成功
     *
     * @param userId
     * @return
     */
    void success(String userId);

    /**
     * 修改个人资料 审核失败
     *
     * @param
     * @return
     */
    void fail(String userId);

    List<User> selectUserInfo();


    void insertBatch(List<User> userList);
}

